/**
 * Copyright (c) 2016-2019 人人开源 All rights reserved.
 * <p>
 * https://www.renren.io
 * <p>
 * 版权所有，侵权必究！
 */

package io.renren.common.utils;

import java.util.Optional;
import java.util.stream.Stream;

/**
 * 常量
 *
 * @author Mark sunlightcs@gmail.com
 */
public class Constant {
    /**
     * 超级管理员ID
     */
    public static final int SUPER_ADMIN = 1;
    /**
     * 当前页码
     */
    public static final String PAGE = "page";
    /**
     * 每页显示记录数
     */
    public static final String LIMIT = "limit";
    /**
     * 排序字段
     */
    public static final String ORDER_FIELD = "sidx";
    /**
     * 排序方式
     */
    public static final String ORDER = "order";
    /**
     * 升序
     */
    public static final String ASC = "asc";

    public static final Integer SOCKET_MAXSIZE = 5;

    /**
     * 菜单类型
     *
     * @author chenshun
     * @email sunlightcs@gmail.com
     * @date 2016年11月15日 下午1:24:29
     */
    public enum MenuType {
        /**
         * 目录
         */
        CATALOG(0),
        /**
         * 菜单
         */
        MENU(1),
        /**
         * 按钮
         */
        BUTTON(2);

        private int value;

        MenuType(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    /**
     * 定时任务状态
     *
     * @author chenshun
     * @email sunlightcs@gmail.com
     * @date 2016年12月3日 上午12:07:22
     */
    public enum ScheduleStatus {
        /**
         * 正常
         */
        NORMAL(0),
        /**
         * 暂停
         */
        PAUSE(1);

        private int value;

        ScheduleStatus(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }


    /**
     * 历史消息查看状态
     */
    public enum VisitStatus {
        /**
         * 已看
         */
        VISITED(1, "已看"),
        /**
         * 未看
         */
        NVISITED(0, "未看");

        private Integer value;
        private String message;

        VisitStatus(int value, String message) {
            this.value = value;
            this.message = message;
        }

        public int getValue() {
            return value;
        }
        public String getMessage() {
            return message;
        }
    }

    /**
     * 历史消息阶段查看状态
     */
    public enum VisitStepStatus {
        /**
         * 待回复
         */
        WAIT_REPLY(1, "已发送随访"),
        /**
         * 待发送
         */
        WAIT_SEND(0, "未发送随访"),

        /**
         * 已完成
         */
        FINISHED(2, "已完成");

        private Integer value;
        private String message;

        VisitStepStatus(int value, String message) {
            this.value = value;
            this.message = message;
        }

        public int getValue() {
            return value;
        }
        public String getMessage() {
            return message;
        }
    }

    /**
     * 审核状态 状态:[0:审核中,1:在使用,2:停用]
     */
    public enum AuditStatus{
        /**
         * 审核中
         */
        AUDITING(0, "审核中"),

        /**
         * 使用中
         */
        USING(1, "审核通过"),

        /**
         * 审核不过
         */
        REJECT(3, "审核不过"),

        /**
         * 停用中
         */
        STOPING(2, "停用中");

        private Integer value;
        private String message;

        AuditStatus(int value, String message) {
            this.value = value;
            this.message = message;
        }

        public int getValue() {
            return value;
        }
        public String getMessage() {
            return message;
        }
    }

    /**
     * 系统角色
     */
    public enum SysRole{
        /**
         * 审核中
         */
        ADMIN(1L, "系统管理员"),

        /**
         * 使用中
         */
        DOCTOR(2L, "诊断医生"),

        /**
         * 停用中
         */
        AUDITOR(3L, "系统审核员");

        private Long value;
        private String message;

        SysRole(Long value, String message) {
            this.value = value;
            this.message = message;
        }

        public Long getValue() {
            return value;
        }
        public String getMessage() {
            return message;
        }
    }

}
